拆 query + 多步检索

demo 图谱

拆分

  • 问题:in-context learning 不能保证同时学会多种拆分方法
    比如线性问题 姚明的老婆的父亲是谁?交集问题 李华和王刚的共同好友有哪些? 的 prompt 不同
  • 现行方案:分开写好各种类型的拆分 prompt,先识别 query 意图,再选择对应的 prompt 做 in-context learning

拆分效果

线性

交集

拆分基本没有问题

多步检索

根据拆分结果,逐个 query 单独做检索

  • 现行方案:使用基本的 GraphQAChain,包含实体抽取模块、检索模块、LLM 模块
    • 实体抽取模块抽出 query 中的实体去做检索。默认效果一般,可以等抽取工作合进来
    • 检索模块只检索抽出的实体,并且还是把三元组当 plain text 检索。默认效果一般。如何加入唯一标识还未知

good case

姚明的老婆的父亲是谁?

现有 pipeline 已能较好地解决线性 2 跳问题

bad case

李华和王刚的共同好友有哪些?

抽取出错,导致检索和生成出错

上一步出错导致错误累计,但 LLM 的理解和生成能力还是在线的

总结

  • 拆 query 基本没问题
  • TODO: query 意图识别
  • TODO: 实体抽取和检索效果差
  • TODO: 改写回答 prompt